Systems and methods for division-free probability regularization for arithmetic coding

ABSTRACT

The various embodiments described herein include methods and systems for coding video. In one aspect, a method includes obtaining video data that includes a first syntax element with a corresponding alphabet of M elements, and obtaining respective probabilities of occurrence for the M elements. The method further includes entropy coding a first portion of the video data using the respective probabilities of occurrence, and, while entropy coding, encountering the first syntax element. The method also includes updating probabilities of occurrence based on the first syntax element, and, in accordance with at least one of the updated probabilities being less than a threshold probability value, determining regularized probabilities of occurrence by applying a probability regularization to the updated probabilities of occurrence, where the probability regularization does not include a division operation.

RELATED APPLICATIONS

This application claims priority to U.S. Provisional Pat. ApplicationNo. 63/319,218, entitled “Division-free Probability Regularization forArithmetic Coding” filed Mar. 11, 2022, which is hereby incorporated byreference in its entirety.

TECHNICAL FIELD

The disclosed embodiments relate generally to video coding, includingbut not limited to systems and methods for probability regularizationfor arithmetic coding.

BACKGROUND

Digital video is supported by a variety of electronic devices, such asdigital televisions, laptop or desktop computers, tablet computers,digital cameras, digital recording devices, digital media players, videogaming consoles, smart phones, video teleconferencing devices, videostreaming devices, etc. The electronic devices transmit and receive orotherwise communicate digital video data across a communication network,and/or store the digital video data on a storage device. Due to alimited bandwidth capacity of the communication network and limitedmemory resources of the storage device, video coding may be used tocompress the video data according to one or more video coding standardsbefore it is communicated or stored.

Multiple video codec standards have been developed. For example, videocoding standards include AOMedia Video 1 (AV1), Versatile Video Coding(VVC), Joint Exploration test Model (JEM), High-Efficiency Video Coding(HEVC/H0.265), Advanced Video Coding (AVC/H0.264), and Moving PictureExpert Group (MPEG) coding. Video coding generally utilizes predictionmethods (e.g., inter-prediction, intra-prediction, or the like) thattake advantage of redundancy inherent in the video data. Video codingaims to compress video data into a form that uses a lower bit rate,while avoiding or minimizing degradations to video quality.

HEVC, also known as H0.265, is a video compression standard designed aspart of the MPEG-H project. ITU-T and ISO/IEC published the HEVC/H0.265standard in 2013 (version 1), 2014 (version 2), 2015 (version 3), and2016 (version 4). Versatile Video Coding (VVC), also known as H0.266, isa video compression standard intended as a successor to HEVC. ITU-T andISO/IEC published the VVC/H0.266 standard in 2020 (version 1) and 2022(version 2). AV1 is an open video coding format designed as analternative to HEVC. On Jan. 8, 2019, a validated version 1.0.0 withErrata 1 of the specification was released.

SUMMARY

As mentioned above, encoding (compression) reduces the bandwidth and/orstorage space requirements. As described in detail later, both losslesscompression and lossy compression can be employed. Lossless compressionrefers to techniques where an exact copy of the original signal can bereconstructed from the compressed original signal via a decodingprocess. Lossy compression refers to coding/decoding process whereoriginal video information is not fully retained during coding and notfully recoverable during decoding. When using lossy compression, thereconstructed signal may not be identical to the original signal, butthe distortion between original and reconstructed signals is made smallenough to render the reconstructed signal useful for the intendedapplication. The amount of tolerable distortion depends on theapplication. For example, users of certain consumer video streamingapplications may tolerate higher distortion than users of cinematic ortelevision broadcasting applications. The compression ratio achievableby a particular coding algorithm can be selected or adjusted to reflectvarious distortion tolerance: higher tolerable distortion generallyallows for coding algorithms that yield higher losses and highercompression ratios.

A video encoder and/or decoder can utilize techniques from several broadcategories and steps, including, for example, motion compensation,Fourier transform, quantization, and entropy coding. During entropycoding, data about operations may be sent to an entropy encoder. Theentropy encoder may output a bitstream (a coded video sequence), whichmay be transmitted to another device via a transmission channel. Duringvideo decoding process, a bitstream may be sent to an entropy decoder.The entropy decoder may output, based on the bitstream, data aboutoperations, which may include intra prediction information, residueinformation, and the like. In some embodiments, the entropycoding/decoding utilizes an arithmetic coding algorithm based onprobability of occurrence of symbols (or characters) as basis forarithmetic coding. In some embodiments, the probability of occurrence ofthe symbols (or characters) is updated dynamically during thecoding/decoding process. For example, there are only two possiblecharacters (“a” and “b”), a probability of an “a” occurrence is denotedas p_a, and a probability of a “b” occurrence is denoted as p_b, andthen p_a + p_b = 1 (or any other constant value). Thus, when the “a” isencountered in the coding/decoding process, p_a may be updated to alarger value; and p_b may be updated to a smaller value because theirsummation may be constant. This probability updating process may bereferred to as a “probability transition process” or a “probabilitystate index updating process.”

In accordance with some embodiments, a method of video coding isprovided. The method includes: (i) obtaining video data comprising aplurality of syntax elements, the plurality of syntax elements includinga first syntax element with a corresponding alphabet of M elements; (ii)obtaining respective probabilities of occurrence for the M elements ofthe first syntax element; (iii) entropy coding a first portion of thevideo data in accordance with the respective probabilities ofoccurrence; (iv) while entropy coding the first portion of the videodata, encountering the first syntax element; (v) updating probabilitiesof occurrence for the M elements in accordance with the first syntaxelement; (vi) in accordance with at least one of the updatedprobabilities for the M elements being less than the thresholdprobability value: (a) determining regularized probabilities ofoccurrence for the M elements by applying a probability regularizationto the updated probabilities of occurrence, wherein the probabilityregularization does not include a division operation; and (b) entropycoding a second portion of the video data in accordance with theregularized probabilities of occurrence; and (vii) in accordance witheach of the updated probabilities for the M elements being at least thethreshold probability value, entropy coding the second portion of thevideo data in accordance with the updated probabilities of occurrence.

In accordance with some embodiments, a computing system is provided,such as a streaming system, a server system, a personal computer system,or other electronic device. The computing system includes controlcircuitry and memory storing one or more sets of instructions. The oneor more sets of instructions including instructions for performing anyof the methods described herein. In some embodiments, the computingsystem includes an encoder component and/or a decoder component.

In accordance with some embodiments, a non-transitory computer-readablestorage medium is provided. The non-transitory computer-readable storagemedium stores one or more sets of instructions for execution by acomputing system. The one or more sets of instructions includinginstructions for performing any of the methods described herein.

Thus, devices and systems are disclosed with methods for coding video.Such methods, devices, and systems may complement or replaceconventional methods, devices, and systems for video coding.

The features and advantages described in the specification are notnecessarily all-inclusive and, in particular, some additional featuresand advantages will be apparent to one of ordinary skill in the art inview of the drawings, specification, and claims provided in thisdisclosure. Moreover, it should be noted that the language used in thespecification has been principally selected for readability andinstructional purposes and has not necessarily been selected todelineate or circumscribe the subject matter described herein.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the present disclosure can be understood in greater detail, amore particular description can be had by reference to the features ofvarious embodiments, some of which are illustrated in the appendeddrawings. The appended drawings, however, merely illustrate pertinentfeatures of the present disclosure and are therefore not necessarily tobe considered limiting, for the description can admit to other effectivefeatures as the person of skill in this art will appreciate upon readingthis disclosure.

FIG. 1 is a block diagram illustrating an example communication systemin accordance with some embodiments.

FIG. 2A is a block diagram illustrating example elements of an encodercomponent in accordance with some embodiments.

FIG. 2B is a block diagram illustrating example elements of a decodercomponent in accordance with some embodiments.

FIG. 3 is a block diagram illustrating an example server system inaccordance with some embodiments.

FIG. 4 is a flow diagram illustrating an example flow for decoding abinary decision.

FIGS. 5A-5B are diagrams illustrating example approaches of enforcingminimum probabilities in accordance with some embodiments.

FIG. 6 is a flow diagram illustrating an example method of coding videoin accordance with some embodiments.

In accordance with common practice, the various features illustrated inthe drawings are not necessarily drawn to scale, and like referencenumerals can be used to denote like features throughout thespecification and figures.

DETAILED DESCRIPTION

The present disclosure describes a division-free approach to entropyencoding/decoding. For example, a minimum probability is defined and, aseach syntax element probability is updated, the updated probability iscompared to the minimum probability. In this example, if an updatedprobability is less than the minimum probability, then a division-freeregularization is performed (e.g., using one or more look-up tablesand/or shift operations). In this way, each syntax element probabilityis prevented from approaching zero, which reduces encodinginefficiencies, prevents Bjontegaard delta (BD) rate losses, and/orreduces modeling errors. Moreover, the division-free approachesdescribed herein reduce/eliminate the calculation costs associated withperforming division operations during the regularization process.

Example Systems and Devices

FIG. 1 is a block diagram illustrating a communication system 100 inaccordance with some embodiments. The communication system 100 includesa source device 102 and a plurality of electronic devices 120 (e.g.,electronic device 120-1 to electronic device 120-m) that arecommunicatively coupled to one another via one or more networks. In someembodiments, the communication system 100 is a streaming system, e.g.,for use with video-enabled applications such as video conferencingapplications, digital TV applications, and media storage and/ordistribution applications.

The source device 102 includes a video source 104 (e.g., a cameracomponent or media storage) and an encoder component 106. In someembodiments, the video source 104 is a digital camera (e.g., configuredto create an uncompressed video sample stream). The encoder component106 generates one or more encoded video bitstreams from the videostream. The video stream from the video source 104 may be high datavolume as compared to the encoded video bitstream 108 generated by theencoder component 106. Because the encoded video bitstream 108 is lowerdata volume (less data) as compared to the video stream from the videosource, the encoded video bitstream 108 requires less bandwidth totransmit and less storage space to store as compared to the video streamfrom the video source 104. In some embodiments, the source device 102does not include the encoder component 106 (e.g., is configured totransmit uncompressed video data to the network(s) 110).

The one or more networks 110 represents any number of networks thatconvey information between the source device 102, the server system 112,and/or the electronic devices 120, including for example wireline(wired) and/or wireless communication networks. The one or more networks110 may exchange data in circuit-switched and/or packet-switchedchannels. Representative networks include telecommunications networks,local area networks, wide area networks and/or the Internet.

The one or more networks 110 include a server system 112 (e.g., adistributed/cloud computing system). In some embodiments, the serversystem 112 is, or includes, a streaming server (e.g., configured tostore and/or distribute video content such as the encoded video streamfrom the source device 102). The server system 112 includes a codercomponent 114 (e.g., configured to encode and/or decode video data). Insome embodiments, the coder component 114 includes an encoder componentand/or a decoder component. In various embodiments, the coder component114 is instantiated as hardware, software, or a combination thereof. Insome embodiments, the coder component 114 is configured to decode theencoded video bitstream 108 and re-encode the video data using adifferent encoding standard and/or methodology to generate encoded videodata 116. In some embodiments, the server system 112 is configured togenerate multiple video formats and/or encodings from the encoded videobitstream 108.

In some embodiments, the server system 112 functions as a Media-AwareNetwork Element (MANE). For example, the server system 112 may beconfigured to prune the encoded video bitstream 108 for tailoringpotentially different bitstreams to one or more of the electronicdevices 120. In some embodiments, a MANE is provided separate from theserver system 112.

The electronic device 120-1 includes a decoder component 122 and adisplay 124. In some embodiments, the decoder component 122 isconfigured to decode the encoded video data 116 to generate an outgoingvideo stream that can be rendered on a display or other type ofrendering device. In some embodiments, one or more of the electronicdevices 120 does not include a display component (e.g., iscommunicatively coupled to an external display device and/or includes amedia storage). In some embodiments, the electronic devices 120 arestreaming clients. In some embodiments, the electronic devices 120 areconfigured to access the server system 112 to obtain the encoded videodata 116.

The source device and/or the plurality of electronic devices 120 aresometimes referred to as “terminal devices” or “user devices.” In someembodiments, the source device 102 and/or one or more of the electronicdevices 120 are instances of a server system, a personal computer, aportable device (e.g., a smartphone, tablet, or laptop), a wearabledevice, a video conferencing device, and/or other type of electronicdevice.

In example operation of the communication system 100, the source device102 transmits the encoded video bitstream 108 to the server system 112.For example, the source device 102 may code a stream of pictures thatare captured by the source device. The server system 112 receives theencoded video bitstream 108 and may decode and/or encode the encodedvideo bitstream 108 using the coder component 114. For example, theserver system 112 may apply an encoding to the video data that is moreoptimal for network transmission and/or storage. The server system 112may transmit the encoded video data 116 (e.g., one or more coded videobitstreams) to one or more of the electronic devices 120. Eachelectronic device 120 may decode the encoded video data 116 to recoverand optionally display the video pictures.

In some embodiments, the transmissions discussed above areunidirectional data transmissions. Unidirectional data transmissions aresometimes utilized in in media serving applications and the like. Insome embodiments, the transmissions discussed above are bidirectionaldata transmissions. Bidirectional data transmissions are sometimesutilized in videoconferencing applications and the like. In someembodiments, the encoded video bitstream 108 and/or the encoded videodata 116 are encoded and/or decoded in accordance with any of the videocoding/compressions standards described herein, such as HEVC, VVC,and/or AV1.

FIG. 2A is a block diagram illustrating example elements of the encodercomponent 106 in accordance with some embodiments. The encoder component106 receives a source video sequence from the video source 104. In someembodiments, the encoder component includes a receiver (e.g., atransceiver) component configured to receive the source video sequence.In some embodiments, the encoder component 106 receives a video sequencefrom a remote video source (e.g., a video source that is a component ofa different device than the encoder component 106). The video source 104may provide the source video sequence in the form of a digital videosample stream that can be of any suitable bit depth (e.g., 8-bit,10-bit, or 12-bit), any colorspace (e.g., BT0.601 Y CrCb, or RGB), andany suitable sampling structure (e.g., Y CrCb 4:2:0 or Y CrCb 4:4:4). Insome embodiments, the video source 104 is a storage device storingpreviously captured/prepared video. In some embodiments, the videosource 104 is camera that captures local image information as a videosequence. Video data may be provided as a plurality of individualpictures that impart motion when viewed in sequence. The picturesthemselves may be organized as a spatial array of pixels, where eachpixel can include one or more samples depending on the samplingstructure, color space, etc. in use. A person of ordinary skill in theart can readily understand the relationship between pixels and samples.The description below focuses on samples.

The encoder component 106 is configured to code and/or compress thepictures of the source video sequence into a coded video sequence 216 inreal-time or under other time constraints as required by theapplication. Enforcing appropriate coding speed is one function of acontroller 204. In some embodiments, the controller 204 controls otherfunctional units as described below and is functionally coupled to theother functional units. Parameters set by the controller 204 may includerate-control-related parameters (e.g., picture skip, quantizer, and/orlambda value of rate-distortion optimization techniques), picture size,group of pictures (GOP) layout, maximum motion vector search range, andso forth. A person of ordinary skill in the art can readily identifyother functions of controller 204 as they may pertain to the encodercomponent 106 being optimized for a certain system design.

In some embodiments, the encoder component 106 is configured to operatein a coding loop. In a simplified example, the coding loop includes asource coder 202 (e.g., responsible for creating symbols, such as asymbol stream, based on an input picture to be coded and referencepicture(s)), and a (local) decoder 210. The decoder 210 reconstructs thesymbols to create the sample data in a similar manner as a (remote)decoder (when compression between symbols and coded video bitstream islossless). The reconstructed sample stream (sample data) is input to thereference picture memory 208. As the decoding of a symbol stream leadsto bit-exact results independent of decoder location (local or remote),the content in the reference picture memory 208 is also bit exactbetween the local encoder and remote encoder. In this way, theprediction part of an encoder interprets as reference picture samplesthe same sample values as a decoder would interpret when usingprediction during decoding. This principle of reference picturesynchronicity (and resulting drift, if synchronicity cannot bemaintained, for example because of channel errors) is known to a personof ordinary skill in the art.

The operation of the decoder 210 can be the same as of a remote decoder,such as the decoder component 122, which is described in detail below inconjunction with FIG. 2B. Briefly referring to FIG. 2B, however, assymbols are available and encoding/decoding of symbols to a coded videosequence by an entropy coder 214 and the parser 254 can be lossless, theentropy decoding parts of the decoder component 122, including thebuffer memory 252 and the parser 254 may not be fully implemented in thelocal decoder 210.

An observation that can be made at this point is that any decodertechnology except the parsing/entropy decoding that is present in adecoder also necessarily needs to be present, in substantially identicalfunctional form, in a corresponding encoder. For this reason, thedisclosed subject matter focuses on decoder operation. The descriptionof encoder technologies can be abbreviated as they are the inverse ofthe comprehensively described decoder technologies. Only in certainareas a more detail description is required and provided below.

As part of its operation, the source coder 202 may perform motioncompensated predictive coding, which codes an input frame predictivelywith reference to one or more previously-coded frames from the videosequence that were designated as reference frames. In this manner, thecoding engine 212 codes differences between pixel blocks of an inputframe and pixel blocks of reference frame(s) that may be selected asprediction reference(s) to the input frame. The controller 204 maymanage coding operations of the source coder 202, including, forexample, setting of parameters and subgroup parameters used for encodingthe video data.

The decoder 210 decodes coded video data of frames that may bedesignated as reference frames, based on symbols created by the sourcecoder 202. Operations of the coding engine 212 may advantageously belossy processes. When the coded video data is decoded at a video decoder(not shown in FIG. 2A), the reconstructed video sequence may be areplica of the source video sequence with some errors. The decoder 210replicates decoding processes that may be performed by a remote videodecoder on reference frames and may cause reconstructed reference framesto be stored in the reference picture memory 208. In this manner, theencoder component 106 stores copies of reconstructed reference frameslocally that have common content as the reconstructed reference framesthat will be obtained by a remote video decoder (absent transmissionerrors).

The predictor 206 may perform prediction searches for the coding engine212. That is, for a new frame to be coded, the predictor 206 may searchthe reference picture memory 208 for sample data (as candidate referencepixel blocks) or certain metadata such as reference picture motionvectors, block shapes, and so on, that may serve as an appropriateprediction reference for the new pictures. The predictor 206 may operateon a sample block-by-pixel block basis to find appropriate predictionreferences. In some cases, as determined by search results obtained bythe predictor 206, an input picture may have prediction references drawnfrom multiple reference pictures stored in the reference picture memory208.

Output of all aforementioned functional units may be subjected toentropy coding in the entropy coder 214. The entropy coder 214translates the symbols as generated by the various functional units intoa coded video sequence, by losslessly compressing the symbols accordingto technologies known to a person of ordinary skill in the art (e.g.,Huffman coding, variable length coding, and/or arithmetic coding).

In some embodiments, an output of the entropy coder 214 is coupled to atransmitter. The transmitter may be configured to buffer the coded videosequence(s) as created by the entropy coder 214 to prepare them fortransmission via a communication channel 218, which may be ahardware/software link to a storage device which would store the encodedvideo data. The transmitter may be configured to merge coded video datafrom the source coder 202 with other data to be transmitted, forexample, coded audio data and/or ancillary data streams (sources notshown). In some embodiments, the transmitter may transmit additionaldata with the encoded video. The source coder 202 may include such dataas part of the coded video sequence. Additional data may comprisetemporal/spatial/SNR enhancement layers, other forms of redundant datasuch as redundant pictures and slices, Supplementary EnhancementInformation (SEI) messages, Visual Usability Information (VUI) parameterset fragments, and the like.

The controller 204 may manage operation of the encoder component 106.During coding, the controller 204 may assign to each coded picture acertain coded picture type, which may affect the coding techniques thatare applied to the respective picture. For example, pictures may beassigned as an Intra Picture (I picture), a Predictive Picture (Ppicture), or a Bi-directionally Predictive Picture (B Picture). An IntraPicture may be coded and decoded without using any other frame in thesequence as a source of prediction. Some video codecs allow fordifferent types of Intra pictures, including, for example IndependentDecoder Refresh (IDR) Pictures. A person of ordinary skill in the art isaware of those variants of I pictures and their respective applicationsand features, and therefore they are not repeated here. A Predictivepicture may be coded and decoded using intra prediction or interprediction using at most one motion vector and reference index topredict the sample values of each block. A Bi-directionally PredictivePicture may be coded and decoded using intra prediction or interprediction using at most two motion vectors and reference indices topredict the sample values of each block. Similarly, multiple-predictivepictures can use more than two reference pictures and associatedmetadata for the reconstruction of a single block.

Source pictures commonly may be subdivided spatially into a plurality ofsample blocks (for example, blocks of 4×4, 8×8, 4×8, or 16×16 sampleseach) and coded on a block-by-block basis. Blocks may be codedpredictively with reference to other (already coded) blocks asdetermined by the coding assignment applied to the blocks’ respectivepictures. For example, blocks of I pictures may be codednon-predictively or they may be coded predictively with reference toalready coded blocks of the same picture (spatial prediction or intraprediction). Pixel blocks of P pictures may be coded non-predictively,via spatial prediction or via temporal prediction with reference to onepreviously coded reference pictures. Blocks of B pictures may be codednon-predictively, via spatial prediction or via temporal prediction withreference to one or two previously coded reference pictures.

A video may be captured as a plurality of source pictures (videopictures) in a temporal sequence. Intra-picture prediction (oftenabbreviated to intra prediction) makes use of spatial correlation in agiven picture, and inter-picture prediction makes uses of the (temporalor other) correlation between the pictures. In an example, a specificpicture under encoding/decoding, which is referred to as a currentpicture, is partitioned into blocks. When a block in the current pictureis similar to a reference block in a previously coded and still bufferedreference picture in the video, the block in the current picture can becoded by a vector that is referred to as a motion vector. The motionvector points to the reference block in the reference picture, and canhave a third dimension identifying the reference picture, in casemultiple reference pictures are in use.

The encoder component 106 may perform coding operations according to apredetermined video coding technology or standard, such as any describedherein. In its operation, the encoder component 106 may perform variouscompression operations, including predictive coding operations thatexploit temporal and spatial redundancies in the input video sequence.The coded video data, therefore, may conform to a syntax specified bythe video coding technology or standard being used.

FIG. 2B is a block diagram illustrating example elements of the decodercomponent 122 in accordance with some embodiments. The decoder component122 in FIG. 2B is coupled to the channel 218 and the display 124. Insome embodiments, the decoder component 122 includes a transmittercoupled to the loop filter unit 256 and configured to transmit data tothe display 124 (e.g., via a wired or wireless connection).

In some embodiments, the decoder component 122 includes a receivercoupled to the channel 218 and configured to receive data from thechannel 218 (e.g., via a wired or wireless connection). The receiver maybe configured to receive one or more coded video sequences to be decodedby the decoder component 122. In some embodiments, the decoding of eachcoded video sequence is independent from other coded video sequences.Each coded video sequence may be received from the channel 218, whichmay be a hardware/software link to a storage device which stores theencoded video data. The receiver may receive the encoded video data withother data, for example, coded audio data and/or ancillary data streams,that may be forwarded to their respective using entities (not depicted).The receiver may separate the coded video sequence from the other data.In some embodiments, the receiver receives additional (redundant) datawith the encoded video. The additional data may be included as part ofthe coded video sequence(s). The additional data may be used by thedecoder component 122 to decode the data and/or to more accuratelyreconstruct the original video data. Additional data can be in the formof, for example, temporal, spatial, or SNR enhancement layers, redundantslices, redundant pictures, forward error correction codes, and so on.

In accordance with some embodiments, the decoder component 122 includesa buffer memory 252, a parser 254 (also sometimes referred to as anentropy decoder), a scaler/inverse transform unit 258, an intra pictureprediction unit 262, a motion compensation prediction unit 260, anaggregator 268, the loop filter unit 256, a reference picture memory266, and a current picture memory 264. In some embodiments, the decodercomponent 122 is implemented as an integrated circuit, a series ofintegrated circuits, and/or other electronic circuitry. In someembodiments, the decoder component 122 is implemented at least in partin software.

The buffer memory 252 is coupled in between the channel 218 and theparser 254 (e.g., to combat network jitter). In some embodiments, thebuffer memory 252 is separate from the decoder component 122. In someembodiments, a separate buffer memory is provided between the output ofthe channel 218 and the decoder component 122. In some embodiments, aseparate buffer memory is provided outside of the decoder component 122(e.g., to combat network jitter) in addition to the buffer memory 252inside the decoder component 122 (e.g., which is configured to handleplayout timing). When receiving data from a store/forward device ofsufficient bandwidth and controllability, or from an isosynchronousnetwork, the buffer memory 252 may not be needed, or can be small. Foruse on best effort packet networks such as the Internet, the buffermemory 252 may be required, can be comparatively large and can beadvantageously of adaptive size, and may at least partially beimplemented in an operating system or similar elements (not depicted)outside of the decoder component 122.

The parser 254 is configured to reconstruct symbols 270 from the codedvideo sequence. The symbols may include, for example, information usedto manage operation of the decoder component 122, and/or information tocontrol a rendering device such as the display 124. The controlinformation for the rendering device(s) may be in the form of, forexample, Supplementary Enhancement Information (SEI) messages or VideoUsability Information (VUI) parameter set fragments (not depicted). Theparser 254 parses (entropy-decodes) the coded video sequence. The codingof the coded video sequence can be in accordance with a video codingtechnology or standard, and can follow principles well known to a personskilled in the art, including variable length coding, Huffman coding,arithmetic coding with or without context sensitivity, and so forth. Theparser 254 may extract from the coded video sequence, a set of subgroupparameters for at least one of the subgroups of pixels in the videodecoder, based upon at least one parameter corresponding to the group.Subgroups can include Groups of Pictures (GOPs), pictures, tiles,slices, macroblocks, Coding Units (CUs), blocks, Transform Units (TUs),Prediction Units (PUs) and so forth. The parser 254 may also extract,from the coded video sequence, information such as transformcoefficients, quantizer parameter values, motion vectors, and so forth.

Reconstruction of the symbols 270 can involve multiple different unitsdepending on the type of the coded video picture or parts thereof (suchas: inter and intra picture, inter and intra block), and other factors.Which units are involved, and how they are involved, can be controlledby the subgroup control information that was parsed from the coded videosequence by the parser 254. The flow of such subgroup controlinformation between the parser 254 and the multiple units below is notdepicted for clarity.

Beyond the functional blocks already mentioned, decoder component 122can be conceptually subdivided into a number of functional units asdescribed below. In a practical implementation operating undercommercial constraints, many of these units interact closely with eachother and can, at least partly, be integrated into each other. However,for the purpose of describing the disclosed subject matter, theconceptual subdivision into the functional units below is maintained.

The scaler/inverse transform unit 258 receives quantized transformcoefficients as well as control information (such as which transform touse, block size, quantization factor, and/or quantization scalingmatrices) as symbol(s) 270 from the parser 254. The scaler/inversetransform unit 258 can output blocks including sample values that can beinput into the aggregator 268.

In some cases, the output samples of the scaler/inverse transform unit258 pertain to an intra coded block; that is: a block that is not usingpredictive information from previously reconstructed pictures, but canuse predictive information from previously reconstructed parts of thecurrent picture. Such predictive information can be provided by theintra picture prediction unit 262. The intra picture prediction unit 262may generate a block of the same size and shape as the block underreconstruction, using surrounding already-reconstructed informationfetched from the current (partly reconstructed) picture from the currentpicture memory 264. The aggregator 268 may add, on a per sample basis,the prediction information the intra picture prediction unit 262 hasgenerated to the output sample information as provided by thescaler/inverse transform unit 258.

In other cases, the output samples of the scaler/inverse transform unit258 pertain to an inter coded, and potentially motion-compensated,block. In such cases, the motion compensation prediction unit 260 canaccess the reference picture memory 266 to fetch samples used forprediction. After motion compensating the fetched samples in accordancewith the symbols 270 pertaining to the block, these samples can be addedby the aggregator 268 to the output of the scaler/inverse transform unit258 (in this case called the residual samples or residual signal) so togenerate output sample information. The addresses within the referencepicture memory 266, from which the motion compensation prediction unit260 fetches prediction samples, may be controlled by motion vectors. Themotion vectors may be available to the motion compensation predictionunit 260 in the form of symbols 270 that can have, for example, X, Y,and reference picture components. Motion compensation also can includeinterpolation of sample values as fetched from the reference picturememory 266 when sub-sample exact motion vectors are in use, motionvector prediction mechanisms, and so forth.

The output samples of the aggregator 268 can be subject to various loopfiltering techniques in the loop filter unit 256. Video compressiontechnologies can include in-loop filter technologies that are controlledby parameters included in the coded video bitstream and made availableto the loop filter unit 256 as symbols 270 from the parser 254, but canalso be responsive to meta-information obtained during the decoding ofprevious (in decoding order) parts of the coded picture or coded videosequence, as well as responsive to previously reconstructed andloop-filtered sample values.

The output of the loop filter unit 256 can be a sample stream that canbe output to a render device such as the display 124, as well as storedin the reference picture memory 266 for use in future inter-pictureprediction.

Certain coded pictures, once fully reconstructed, can be used asreference pictures for future prediction. Once a coded picture is fullyreconstructed and the coded picture has been identified as a referencepicture (by, for example, parser 254), the current reference picture canbecome part of the reference picture memory 266, and a fresh currentpicture memory can be reallocated before commencing the reconstructionof the following coded picture.

The decoder component 122 may perform decoding operations according to apredetermined video compression technology that may be documented in astandard, such as any of the standards described herein. The coded videosequence may conform to a syntax specified by the video compressiontechnology or standard being used, in the sense that it adheres to thesyntax of the video compression technology or standard, as specified inthe video compression technology document or standard and specificallyin the profiles document therein. Also, for compliance with some videocompression technologies or standards, the complexity of the coded videosequence may be within bounds as defined by the level of the videocompression technology or standard. In some cases, levels restrict themaximum picture size, maximum frame rate, maximum reconstruction samplerate (measured in, for example megasamples per second), maximumreference picture size, and so on. Limits set by levels can, in somecases, be further restricted through Hypothetical Reference Decoder(HRD) specifications and metadata for HRD buffer management signaled inthe coded video sequence.

FIG. 3 is a block diagram illustrating the server system 112 inaccordance with some embodiments. The server system 112 includes controlcircuitry 302, one or more network interfaces 304, a memory 314, a userinterface 306, and one or more communication buses 312 forinterconnecting these components. In some embodiments, the controlcircuitry 302 includes one or more processors (e.g., a CPU, GPU, and/orDPU). In some embodiments, the control circuitry includes one or morefield-programmable gate arrays (FPGAs), hardware accelerators, and/orone or more integrated circuits (e.g., an application-specificintegrated circuit).

The network interface(s) 304 may be configured to interface with one ormore communication networks (e.g., wireless, wireline, and/or opticalnetworks). The communication networks can be local, wide-area,metropolitan, vehicular and industrial, real-time, delay-tolerant, andso on. Examples of communication networks include local area networkssuch as Ethernet, wireless LANs, cellular networks to include GSM, 3G,4G, 5G, LTE and the like, TV wireline or wireless wide area digitalnetworks to include cable TV, satellite TV, and terrestrial broadcastTV, vehicular and industrial to include CANBus, and so forth. Suchcommunication can be unidirectional, receive only (e.g., broadcast TV),unidirectional send-only (e.g., CANbus to certain CANbus devices), orbi-directional (e.g., to other computer systems using local or wide areadigital networks). Such communication can include communication to oneor more cloud computing networks.

The user interface 306 includes one or more output devices 308 and/orone or more input devices 310. The input device(s) 310 may include oneor more of: a keyboard, a mouse, a trackpad, a touch screen, adata-glove, a joystick, a microphone, a scanner, a camera, or the like.The output device(s) 308 may include one or more of: an audio outputdevice (e.g., a speaker), a visual output device (e.g., a display ormonitor), or the like.

The memory 314 may include high-speed random-access memory (such asDRAM, SRAM, DDR RAM, and/or other random access solid-state memorydevices) and/or non-volatile memory (such as one or more magnetic diskstorage devices, optical disk storage devices, flash memory devices,and/or other non-volatile solid-state storage devices). The memory 314optionally includes one or more storage devices remotely located fromthe control circuitry 302. The memory 314, or, alternatively, thenon-volatile solid-state memory device(s) within the memory 314,includes a non-transitory computer-readable storage medium. In someembodiments, the memory 314, or the non-transitory computer-readablestorage medium of the memory 314, stores the following programs,modules, instructions, and data structures, or a subset or supersetthereof:

-   an operating system 316 that includes procedures for handling    various basic system services and for performing hardware-dependent    tasks;-   a network communication module 318 that is used for connecting the    server system 112 to other computing devices via the one or more    network interfaces 304 (e.g., via wired and/or wireless    connections);-   a coding module 320 for performing various functions with respect to    encoding and/or decoding data, such as video data. In some    embodiments, the coding module 320 is an instance of the coder    component 114. The coding module 320 including, but not limited to,    one or more of:    -   ◯ a decoding module 322 for performing various functions with        respect to decoding encoded data, such as those described        previously with respect to the decoder component 122; and    -   ◯ an encoding module 340 for performing various functions with        respect to encoding data, such as those described previously        with respect to the encoder component 106; and-   a picture memory 352 for storing pictures and picture data, e.g.,    for use with the coding module 320. In some embodiments, the picture    memory 352 includes one or more of: the reference picture memory    208, the buffer memory 252, the current picture memory 264, and the    reference picture memory 266.

In some embodiments, the decoding module 322 includes a parsing module324 (e.g., configured to perform the various functions describedpreviously with respect to the parser 254), a transform module 326(e.g., configured to perform the various functions described previouslywith respect to the scalar/inverse transform unit 258), a predictionmodule 328 (e.g., configured to perform the various functions describedpreviously with respect to the motion compensation prediction unit 260and/or the intra picture prediction unit 262), and a filter module 330(e.g., configured to perform the various functions described previouslywith respect to the loop filter unit 256).

In some embodiments, the encoding module 340 includes a code module 342(e.g., configured to perform the various functions described previouslywith respect to the source coder 202, the coding engine 212, and/or theentropy coder 214) and a prediction module 344 (e.g., configured toperform the various functions described previously with respect to thepredictor 206). In some embodiments, the decoding module 322 and/or theencoding module 340 include a subset of the modules shown in FIG. 3 .For example, a shared prediction module is used by both the decodingmodule 322 and the encoding module 340.

Each of the above identified modules stored in the memory 314corresponds to a set of instructions for performing a function describedherein. The above identified modules (e.g., sets of instructions) neednot be implemented as separate software programs, procedures, ormodules, and thus various subsets of these modules may be combined orotherwise re-arranged in various embodiments. For example, the codingmodule 320 optionally does not include separate decoding and encodingmodules, but rather uses a same set of modules for performing both setsof functions. In some embodiments, the memory 314 stores a subset of themodules and data structures identified above. In some embodiments, thememory 314 stores additional modules and data structures not describedabove, such as an audio processing module.

In some embodiments, the server system 112 includes web or HypertextTransfer Protocol (HTTP) servers, File Transfer Protocol (FTP) servers,as well as web pages and applications implemented using Common GatewayInterface (CGI) script, PHP Hypertext Preprocessor (PHP), Active ServerPages (ASP), Hyper Text Markup Language (HTML), Extensible MarkupLanguage (XML), Java, JavaScript, Asynchronous JavaScript and XML(AJAX), XHP, Javelin, Wireless Universal Resource File (WURFL), and thelike.

Although FIG. 3 illustrates the server system 112 in accordance withsome embodiments, FIG. 3 is intended more as a functional description ofthe various features that may be present in one or more server systemsrather than a structural schematic of the embodiments described herein.In practice, and as recognized by those of ordinary skill in the art,items shown separately could be combined and some items could beseparated. For example, some items shown separately in FIG. 3 could beimplemented on single servers and single items could be implemented byone or more servers. The actual number of servers used to implement theserver system 112, and how features are allocated among them, will varyfrom one implementation to another and, optionally, depends in part onthe amount of data traffic that the server system handles during peakusage periods as well as during average usage periods.

Entropy Encoding

As mentioned previously, during entropy coding, data about operationsmay be sent to an entropy encoder (e.g., the entropy coder 214). Theentropy encoder may output a bitstream, which may be transmitted toanother device via a transmission channel. During video decodingprocess, a bitstream may be sent to an entropy decoder. The entropydecoder can be configured to reconstruct, from the coded picture,certain symbols that represent the syntax elements of which the codedpicture is made up. Such symbols can include, for example, the mode inwhich a block is coded (e.g., intra mode, inter mode, bi-predicted mode,merge submode or another submode), prediction information (e.g., intraprediction information or inter prediction information) that canidentify certain sample or metadata used for prediction by an intradecoder or an inter decoder, residual information in the form of, forexample, quantized transform coefficients, and the like

For example, in HEVC, an entropy coder/decoder may use a contextadaptive binary arithmetic coding (CABAC) algorithm. The CABAC engine inHEVC uses a table-based probability transition process between 64different representative probability states.

Syntax elements describing a video frame content can be subjected tobinary arithmetic coding to obtain an encoded stream as a binary binstream. During CABAC, an initial interval [0,1) may be stretched by aninteger multiplier (e.g., 512), a probability of a least probable symbol(pLPS) may be presented as an integer divisor by rounding off theirquotient. Then, interval splitting operations with a typical arithmeticcoding may be performed as approximate computations using integerarithmetic with a specified resolution. An updated interval lengthcorresponding to LPS (rLPS) may be computed as rLPS = R * pLPS, whereinR is a value of the current interval length. To save time and increaseefficiency, the above computationally intensive multiplication operationmay be replaced by a lookup table (LUT) populated with pre-computedmultiplication results; and thus, an updated interval lengthcorresponding to LPS (ivLpsRange) may be obtained by two indexespStateIdx and qRangeIdx, e.g., ivlLpsRange =rangeTabLps[pStateIdx][qRangeldx].

During encoding/decoding, the probability value pLPS may be updatedrecursively each time a new value of the bin to be encoded/decoded(binVal) is obtained. For example, at the kth step (that is, during theencoding or decoding of the kth bin), the new value of pLPS may becomputed to be a larger value when the binVal is the value of LPS; orthe new value of pLPS may be computed to be a smaller value when thebinVal is the value of most probable symbol (MPS).

In some embodiments, pLPS may be one of 64 possible values that areindexed by the 6-bit pStateIdx variable. Updating the probability valuemay be achieved by updating the index pStateIdx, which may be carriedout by looking up values from pre-computed tables, to save computingpower and/or to improve efficiency.

In some embodiments, a range ivlCurrRange representing the state of thecoding engine may be quantized to a set of 4 values prior to thecalculation of the new interval range. The state transition may beimplemented using a table containing all 64×4 8-bit pre-computed valuesto approximate the values of iv1CurrRange * pLPS(pStateIdx). Also, adecode decision may be implemented using a pre-computed LUT. FirstivlLpsRange is obtained using the LUT, and then, ivlLpsRange is used toupdate ivlCurrRange and calculate the output binVal.

As an example, in VVC, the probability may be linearly expressed by theprobability index pStateIdx. Therefore, all the calculation may be donewith equations without a LUT operation. To improve the accuracy ofprobability estimation, a multi-hypothesis probability update model maybe used, as illustrated in FIG. 4 . In this example, the pStateIdx usedin the interval subdivision in the binary arithmetic coder is acombination of two probabilities pStateIdx0 and pStateIdx1 . The twoprobabilities are associated with each context model and are updatedindependently with different adaptation rates. The adaptation rates ofpStateIdx0 and pStateIdx1 for each context model can be pre-trainedbased on the statistics of the associated bins. The probability estimatepStateIdx can be the average of the estimates from the two hypotheses.

FIG. 4 is a flow diagram illustrating an example flow for decoding asingle decision (DecodeDecision), including a renormalization process inthe arithmetic decoding engine (RenomD). In some embodiments, the inputto DecodeDecision is a context table (ctxTable) and a context index(ctxIdx). A value of the variable ivlLpsRange is derived as shown in402. Given the current value of iv1CurrRange, the variable qRangeIdx isderived as qRangeIdx = ivlCurrRange >> 5. Given qRangeIdx, pStateIdx0and pStateIdx1 associated with ctxTable and ctxIdx, valMps andivlLpsRange are derived as pState = pStateIdx1 + 16 * pStateIdx0; valMps= pState >> 14; and ivlLpsRange = (qRangeIdx * ((valMps ? 32767 -pState:pState) >> 9) >> 1) + 4. The variable ivlCurrRange is set to beivlCurrRange - ivlLpsRange.

When ivlOffset is greater than or equal to ivlCurrRange, the variablebinVal is set equal to 1 - valMps, ivlOffset is decremented byiv1CurrRange, and ivlCurrRange is set equal to ivlLpsRange; otherwise,the variable binVal is set equal to valMps.

For updating the probability, during state transition process, inputs tothis process are the current pStateIdx0 and pStateIdxl, and the decodedvalue binVal; and outputs of this process are the updated pStateIdx0 andpStateIdx1 of the context variable associated with ctxTable and ctxIdx.The variables shift0 and shift1 are derived from the shiftIdx valueassociated with ctxTable and ctxIdx in 402: shift0 = (shiftIdx >> 2) +2; and shift1 = (shiftIdx & 3) + 3 + shift0; and depending on thedecoded value binVal, the update of the two variables pStateIdx0 andpStateIdx1 associated with ctxTable and ctxIdx is derived as pStateIdx0= pStateIdx0 - ( pStateIdx0 >> shift0 ) + (1023 * binVal >> shift0 ) andpStateIdx1 = pStateIdx1 - ( pStateIdx1 >> shift1 ) + (16383 * binVal >>shift1 ).

As an example, a VVC CABAC may have a quantization parameter (QP)dependent initialization process invoked at the beginning of each slice.Given the initial value of luma QP for the slice, the initialprobability state of a context model, denoted as preCtxState, may bederived by: m = slopeldx × 5 - 45, n = (oƒƒsetIdx « 3) + 7; andpreCtxState = Clip3 (1, 127, ((m × (QP - 32)) » 4) + n).

In some embodiments, the slopeIdx and offsetIdx are restricted to 3bits, and total initialization values are represented by 6-bitprecision. The probability state preCtxState may represent theprobability in the linear domain directly. Hence, preCtxState may onlyneed proper shifting operations before input to arithmetic codingengine, and the logarithmic to linear domain mapping as well as the256-byte table may be predefined and stored/saved in memory. ThepStateIdx0 and pStateIdx1 may be obtained by pStateIdx0 = preCtxState «3; and pStateIdx1 = preCtxState « 7.

In some embodiments, CABAC algorithms may use a binary basis, whichinclude two possible characters/symbols (e.g., “0” and “1”). In abinary-based arithmetic coding algorithm, the two possiblecharacters/symbols may also be denoted as the least probable symbol(LPS) and the most probable symbol (MPS).

In some embodiments, an entropy encoder or decoder may use an arithmeticalgorithm with an M-ary basis, which include M possiblecharacters/symbols. For example, M may be any integer value between 2and 16. For example, when M is equal to 5, the M-ary basis includes 5possible characters/symbols, which may be represented as “0”, “1”, “2”,“3”, and “4”.

The M-ary arithmetic coding engine is used for entropy coding the syntaxelements. Each syntax element is associated with an alphabet of Melements. As input to the encoder or the decoder, a coding context mayinclude a sequence of M-ary symbols with a set of M probabilities. Eachof the M probabilities may correspond to each of the M-ary symbols; andmay be represented by a cumulative distribution function (CDF).

The cumulative distribution functions for M-ary symbols can be denotedas C = [c₀, c₁, ..., c_((M-2)), c_((M-1))]. The cumulative distributionfunctions for M-ary symbols may be represented by an array of M 15-bitintegers, where C_((M-1)) = 2¹⁵, c_(n)/32768 is the probability of thesymbol being less than or equal to n, and n is an integer from 0 to M-1.

In some embodiments, the M probabilities (e.g., the array of cumulativedistribution functions) are updated after coding/parsing each syntaxelement. In some embodiments, the M probabilities are updated aftercoding/decoding each M-ary symbol. For example, when M = 4, the array ofcumulative distribution functions includes [c₀, c₁, c₂, c₃ ].

In some embodiments, the update of the M probabilities is performed inaccordance with the following equations:

$\left\{ \begin{matrix}{c_{m} = c_{m} \cdot \left( {1 - \alpha} \right)} & {m \in \left\lbrack {0,symbol} \right)} \\{c_{m} = c_{m} + \alpha \cdot \left( {1 - c_{m}} \right)} & {m \in \left\lbrack {symbol,M - 1} \right)}\end{matrix} \right)$

where symbol is the presently being-coded/decoded M-ary symbol, α is theprobability update rate that adapts based on the number of times thesymbol has been coded or decoded (e.g., up to a maximum of 32) and m isthe index of the element in the CDF. This adaptation of α may allow forfaster probability updates at the beginning of coding/parsing the syntaxelements. For example, when M =5 and presently being decoded M-arysymbol is “3”, m € [0, symbol) may be m € [0, 3) with m including anyinteger between 0, inclusive, and 3, exclusive; and m € [symbol, M - 1)may be m € [3, 4) with m including any integer between 3, inclusive, and4, exclusive.

In some embodiments, the M-ary arithmetic coding process may follow theconventional arithmetic coding engine design; however, only the mostsignificant 9 bits of the 15-bit probability values are input to thearithmetic encoder/decoder. The probability update rate α associatedwith a symbol is calculated based on the number of appearances for theassociated symbol when parsing a bitstream and the value of α is resetusing the following formula at the beginning of a frame or a tile.

As an example,

$\alpha = \frac{1}{2^{8 + {({count > 15})} + {({count > 32})} + \min{({\log_{2}{(M)},2})}}},$

wherein the count is the number of appearances for the associated symbolwhen coding/parsing a bitstream. As indicated by the above equation, theprobability update rate has a greater value at the beginning (when thecount is relatively small, for example, 16) and then saturates later(when the count is relatively large, for example, after 32 appearances,or 40).

Updating the rate α can lead to a strongly biased distribution withcertain symbol probabilities reducing close to zero. Probabilities closeto zero can result in BD rate losses. To counter this effect aregularization approach may be used, where at the end of eachprobability update if the probability (p_(m)) is less than a threshold(P_(thr)), a regularization term is applied to all probabilities so thatp_(m) is moved to P_(thr). The regularization term may be taken from auniform distribution and may depend on the sample space of the syntaxelement.

FIGS. 5A-5B are diagrams illustrating example approaches of enforcingminimum probabilities in accordance with some embodiments. As anexample, in AV1, a minimum probability P_(min) is applied to guard theprobability fed to the arithmetic coding (sometimes referred to as a“minimum guard” approach), as illustrated in FIG. 5A. In the minimumguard approach shown in FIG. 5A, the subsequent model update increasesp₂ in stage n, it further pushes p₁ towards 0, which can potentiallyincur coding efficiency loss in the presence of model error.

Regularization can be used as an alternative to the minimum guardapproach and is illustrated in FIG. 5B. For example, at the end of anupdate, if there is a probability, say p_(m), that goes below P_(min) auniform distribution can be applied as a regularization term to adjustall the probabilities simultaneously.

The CDF of the M-ary uniform distribution can be defined as

${\overline{C}}^{u} = \left\lbrack {c_{1}^{u},c_{2}^{u},\mspace{6mu}\ldots\mspace{6mu},c_{M - 1}^{u},1} \right\rbrack = \left\lbrack {\frac{1}{M},\frac{2}{M},\mspace{6mu}\ldots\mspace{6mu},\frac{M - 1}{M},1} \right\rbrack.$

In this way, the regularization moves move p_(m) back to P_(min) through

${\hat{p}}_{m} = \frac{p_{m} + \alpha\frac{1}{M}}{1 + \alpha} = P_{min},$

which leads to

$\alpha = \frac{p_{min} - p_{m}}{\frac{1}{M} - P_{min}}.$

The update rate α can be approximated as MP_(min), since P_(min) « ⅟Mand that one could allow p̂_(m) to be slightly above P_(min). Thistranslates into a CDF regularization of

${\hat{C}}_{n} = \frac{{\overline{C}}_{n} + \alpha{\overline{C}}^{u}}{1 + \alpha}.$

As is apparent, calculating either the α or the Ĉ_(n) using theseequations involves a division operation.

FIG. 6 is a flow diagram illustrating a method 600 of coding video inaccordance with some embodiments. The method 600 may be performed at acomputing system (e.g., the server system 112, the source device 102, orthe electronic device 120) having control circuitry and memory storinginstructions for execution by the control circuitry. In someembodiments, the method 600 is performed by executing instructionsstored in the memory (e.g., the memory 314) of the computing system.

The system obtains (602) video data comprising a plurality of syntaxelements, the plurality of syntax elements including a first syntaxelement with a corresponding alphabet of M elements. For example, thesystem obtains the video data from a communication channel, such as thechannel 218. The system obtains (604) respective probabilities ofoccurrence for the M elements of the first syntax element. For example,the system obtains the respective probabilities from the picture memory352, generates the respective probabilities, or obtains the respectiveprobabilities from a remote device (e.g., via the channel 218). Thesystem entropy codes (606) a first portion of the video data inaccordance with the respective probabilities of occurrence. For example,the system encodes the first portion using the entropy coder 214 and/ordecodes the first portion using the parser 254. While entropy coding thefirst portion of the video data, the system encounters (608) the firstsyntax element (e.g., the coding module 320 encounters the first syntaxelement). For example, the first syntax element has a particular elementfrom the M elements. The system updates (610) probabilities ofoccurrence for the M elements in accordance with the first syntaxelement (e.g., using the coding module 320). For example, the systemincreases the probability of occurrence for the particular element ofthe instance and reduces the probabilities of occurrence for otherelements. In accordance with at least one of the updated probabilitiesfor the M elements being less than a threshold probability value (612),the system determines (614) regularized probabilities of occurrence forthe M elements by applying a probability regularization to the updatedprobabilities of occurrence (e.g., using the coding module 320), wherethe probability regularization does not include a division operation. Inaccordance with at least one of the updated probabilities for the Melements being less than a threshold probability value (612), the systementropy codes (616) a subsequent portion of the video data in accordancewith the regularized probabilities of occurrence (e.g., using the codingmodule 320). In accordance with each of the updated probabilities forthe M elements being at least the threshold probability value, thesystem entropy codes (618) the subsequent portion of the video data inaccordance with the updated probabilities of occurrence (e.g., using thecoding module 320).

In some embodiments, a minimum probability value P_(thr) is predefined,and when updating the probability during entropy coding, after encodingor decoding a syntax R, candidate probability updates are tested, and ifthe candidate probability updates yield probability values [ṕ₀, ṕ₁,...,ṕ_(k), .... ṕ_(M)] for a symbol in [s₀, s₁, ..., s_(k), ... s_(M)] whereat least one ṕ_(k), is lower than P_(thr), a division-freeregularization on [ṕ₀, ṕ₁,..., ṕ_(k), .... ṕ_(M)] associated with thecurrent syntax R is applied, such that after regularization, theprobabilities are further adjusted to be values greater than or equal toP_(thr). In some embodiments, P_(thr) is P_(min) described above. Insome embodiments, R corresponds to a M-ary syntax element with symbolspace ε [s₀, s₁, ..., s_(k), ... s_(M)], probabilities ε [p₀, p₁, ...,p_(k), ... p_(M)]. M can take values including, but not limited to, therange 2 to 16 and k < = M.

An inverse probability update rate, β, can be calculated as shown belowin Equation 1.

$\begin{matrix}{\beta = \frac{1}{\alpha} = \frac{\frac{1}{M} - P_{thr}}{P_{thr} - {\text{p}^{\prime}}_{k}}} & \text{­­­Equation 1 - Inverse Probability Update Rate}\end{matrix}$

In some embodiments, instead of calculating β, an alternative divisionfree operation is used to calculate β′ that approximates β, as shownbelow in Equation 2.

$\begin{matrix}{\beta^{\prime} = \frac{1}{\alpha} = \left( {S \cdot f\left( {P_{thr},{\text{p}^{\prime}}_{k}} \right)} \right) \gg n} & \text{­­­Equation 2 - Division-Free Inverse Probability Update Rate}\end{matrix}$

In Equation 2, S is a predefined value depending on nsymbols (number ofsymbol values of the current syntax R), ƒ (P_(thr), ṕ_(k)) is a functionof P_(thr) and ṕ_(k), and n is predefined value. In some embodiments,the output of function ƒ (P_(thr), ṕ_(k)) includes (or consists of)positive integers (e.g., 1, 2, 3, ..., N). In some embodiments, theoutput of function ƒ (P_(thr), ṕ_(k)) includes (or consists of) positiveintegers that are powers of 2 such that multiplication with ƒ(P_(thr),ṕ_(k)) can be implemented as right shift operation. In some embodiments,the function ƒ(P_(thr), ṕ_(k)) is a table look-up process, the index ofthe look-up table is ṕ_(k) and P_(thr), and output is the value in thelook-up table identified by the index.

The CDF entries can be adjusted as shown below in Equation 3.

$\begin{matrix}{{\hat{C}}_{n} = \frac{\beta^{\prime} \cdot {\overline{C}}_{n} + {\overline{C}}^{u}}{1 + \beta^{\prime}}} & \text{­­­Equation 3 - CDF Update}\end{matrix}$

In some embodiments, instead of calculating Ĉ_(n), an alternativedivision free operation is applied to calculate Ĉ_(n)′ that approximatesĈ_(n), as shown below in Equation 4.

$\begin{matrix}{{\hat{C}}_{n} = \left( {\left( {\beta^{\prime} \cdot {\overline{C}}_{n} + {\overline{C}}^{u}} \right) \cdot K} \right) \gg m} & \text{­­­Equation 4 - Division-Free CDF Update}\end{matrix}$

In Equation 4, K is a predefined value depending on nsymbols (number ofsymbol values of the current syntax) and m is a predefined value.

In some embodiments, when a probability lower than P_(thr) isidentified, entries in the CDF are scanned in a predefined order, and anentry associated with a probability lower than P_(thr) is furtheradjusted by an offset. In some embodiments, the offset is a value thatafter applying adjusting the entry in CDF by the offset, the associatedprobability becomes closer or equal to P_(thr).

In an example, the P_(thr) is defined as 128/32768 and, for a syntaxwith four symbol values, after the probability update the CDF is {100,10000, 20000, 32768}, where the probabilities of four symbols are{100/32768, (10000-100})/32768, (20000-10000)/32768,(32768-20000)/32768}. In this example, the system identifies that theprobability of the first symbol (100/32768) is lower than the P_(thr),and adjusts the probabilities to {128, 10000, 20000, 32768}. After theadjustment, no symbol has an associated probability lower than P_(thr)and the adjustment process is terminated.

In some embodiments, the predefined scan starts from the first entry inthe CDF and progress toward the last entry in the CDF. In someembodiments, the predefined scan starts from the last entry in the CDFand progress toward the first entry in the CDF. In some embodiments, thepredefined scan starts from the first CDF entry associated with aprobability lower than P_(thr) and progresses towards the last entry. Insome embodiments, the predefined scan starts from the first CDF entryassociated with a probability lower than P_(thr) and progresses towardsthe first entry.

Although FIG. 6 illustrates a number of logical stages in a particularorder, stages which are not order dependent may be reordered and otherstages may be combined or broken out. Some reordering or other groupingsnot specifically mentioned will be apparent to those of ordinary skillin the art, so the ordering and groupings presented herein are notexhaustive. Moreover, it should be recognized that various stages couldbe implemented in hardware, firmware, software, or any combinationthereof.

Turning now to some example embodiments. In the following, R correspondsto a M-ary syntax element with symbol space ε [s₀, s₁, ..., s_(k), ...s_(M)], probabilities ε [p₀, p₁, ..., p_(k), ... p_(M)]. M can takevalues including, but not limited to, the range 2 to 16 and k <= M.

(A1) In one aspect, some embodiments include a method (e.g., the method600) of video coding. In some embodiments, the method is performed at acomputing system (e.g., the server system 112) having memory and controlcircuitry. In some embodiments, the method is performed at a codingmodule (e.g., the coding module 320). In some embodiments, the method isperformed at an entropy coder (e.g., the entropy coder 214). In someembodiments, the method is performed at a parser (e.g., the parser 254).The method includes: (i) obtaining video data comprising a plurality ofsyntax elements, the plurality of syntax elements including a firstsyntax element with a corresponding alphabet of M elements; (ii)obtaining respective probabilities of occurrence for the M elements ofthe first syntax element; (iii) entropy coding a first portion of thevideo data in accordance with the respective probabilities ofoccurrence; (iv) while entropy coding the first portion of the videodata, encountering the first syntax element; (v) updating probabilitiesof occurrence for the M elements in accordance with the first syntaxelement; (vi) in accordance with at least one of the updatedprobabilities for the M elements being less than a threshold probabilityvalue (e.g., P_(thr)): (a) determining regularized probabilities ofoccurrence for the M elements by applying a probability regularizationto the updated probabilities of occurrence, where the probabilityregularization does not include a division operation; and (b) entropycoding a second portion of the video data in accordance with theregularized probabilities of occurrence; and (vii) in accordance witheach of the updated probabilities for the M elements being at least thethreshold probability value, entropy coding the second portion of thevideo data in accordance with the updated probabilities of occurrence.

For example, the entropy coder is or includes an adaptive arithmeticcoder that updates probabilities after each instance of a syntax elementis encountered/coded. For example, a first instance of a syntax elementis encountered during the coding process. If the first instance of thesyntax element is s₁ then the probability (p₁) associated with s₁ isincreased and the probabilities associated with other elements (e.g., s₀and s₂) are decreased. As the coding process continues, a secondinstance of the syntax element is encountered. If the second instance ofthe syntax element is s₀ then the probability associated with s₀ isincreased accordingly. In some embodiments, probabilities are adapted byrecursive scaling, with an update factor based on the alphabet size.

(A2) In some embodiments of A1, a number of the M elements is in a rangeof 2 to 16. In some embodiments, the number of the M elements is greaterthan 16. In some embodiments, the range is predefined based on a codingprotocol, standard, and/or configuration.

(A3) In some embodiments of A1 or A2, the respective probabilities ofoccurrence for the M elements are represented by a cumulativedistribution function. For example, the CDFs described previously withrespect to FIGS. 5B and 6 .

(A4) In some embodiments of any of A1-A3, each probability in theregularized probabilities of occurrence for the M elements is greaterthan or equal to the threshold probability value. In some embodiments,the regularization process is configured to ensure that each probabilityof occurrence is at least the threshold probability value (e.g., eachprobability is at least P_(thr)).

(A5) In some embodiments of any of A1-A4, the threshold probabilityvalue is selected from a set of threshold probability values based onone or more properties of the first syntax element. For example, thethreshold probability value may be based on the number of the Melements.

(A6) In some embodiments of any of A1-A5, determining the regularizedprobabilities of occurrence for the M elements includes determining aninverse probability update rate. For example, the inverse probabilityupdate rate shown in Equation 2 above.

(A7) In some embodiments of A6: (i) the inverse probability update rateis determined by multiplying a first predefined value by an output of afunction; (ii) the first predefined value is based on a number of symbolvalues for the first syntax element; and (iii) the function is based onthe threshold probability value and a value of an updated probability ofthe updated probabilities for the M elements that is less than thethreshold probability value.

(A8) In some embodiments of A7, the function accesses a lookup table,where the threshold probability value and the value of the updatedprobability that is less than the threshold probability value are usedto index the lookup table.

(A9) In some embodiments of A7 or A8, the output of the function is apositive integer (e.g., 1, 2, ..., N).

(A10) In some embodiments of any of A7-A9, multiplying the firstpredefined value by the output of the function comprises performing aright shift operation (e.g., as described previously with respect toEquation 2).

(A11) In some embodiments of any of A1-A10, determining the regularizedprobabilities of occurrence for the M elements includes determining avalue for a regularized cumulative distribution function (CDF). Forexample, the value for the regularized CDF is updated in accordance withEquation 4 above.

(A12) In some embodiments of A11, the value for the regularized CDF isdetermined by multiplying an inverse probability update rate by a secondpredefined value, where the second predefined value is based on a numberof symbol values for the first syntax element.

(A13) In some embodiments of A11, the value for the regularized CDF isdetermined by multiplying the inverse probability update rate by thesecond predefined value and by a CDF of the respective probabilities ofoccurrence for the M elements.

(A14) In some embodiments of any of A1-A13, applying the probabilityregularization to the updated probabilities of occurrence includesscanning entries of a CDF of the respective probabilities of occurrencefor the M elements in a predefined order. In some embodiments, the CDFis updated and then tested by scanning the entries of the updated CDF ina predefined order.

(A15) In some embodiments of A14, the scanning is terminated inaccordance with a scanned updated probability of occurrence beinggreater than or equal to the threshold probability value.

(A16) In some embodiments of A14 or A15, the predefined order is from afirst entry of the CDF toward a last entry of the CDF, or from the lastentry of the CDF toward the first entry of the CDF.

(A17) In some embodiments of A14, the predefined order starts at anentry of the CDF having a probability of occurrence below the thresholdprobability value.

(A18) In some embodiments of any of A1-A17, applying the probabilityregularization to the updated probabilities of occurrence includesapplying an offset to a value of an updated probability of the updatedprobabilities for the M elements that is less than the thresholdprobability value.

(A19) In some embodiments of A18, after applying the offset to the valueof the updated probability, the value of the updated probability isgreater than or equal to the threshold probability value.

(A20) In some embodiments of A18 or A19, wherein the offset is selectedsuch that the updated probability value is less than a probability valueof a second element of the M elements. For example, when updating theprobability of individual-hypothesis during entropy coding for a syntaxR, if the probability updates yield probability values [ṕ₀, ṕ₁,...,ṕ_(k), .... ṕ_(M)] and CDF values [c₀, c₁,..., c_(k), .... c_(M-1), 1]for a symbol in [s₀, s₁, ..., s_(k), ... s_(M)] where at least one ṕ_(k)is lower than a pre-defined minimum probability value P_(thr), an offsetis added to move ṕ_(k) back toward P_(thr), based on the followingcondition being met: c_(k-1) < C_(k+1) - P_(thr).

(A21) In some embodiments of any of A1-A20, the second portion isentropy coded in accordance with the regularized probabilities ofoccurrence in accordance with a determination that M is less than athreshold number. For example, the probability regularization is onlyperformed on syntax elements having less than a preset threshold numberof elements (e.g., less than 12, 10, 8, 6, 4, or 2). In this example,the system forgoes applying the regularization operation on syntaxelements having more than the preset threshold number of elements.

(B1) In another aspect, some embodiments include a method of videocoding. In some embodiments, the method is performed at a computingsystem (e.g., the server system 112) having memory and controlcircuitry. In some embodiments, the method is performed at a codingmodule (e.g., the coding module 320). In some embodiments, the method isperformed at an entropy coder (e.g., the entropy coder 214). In someembodiments, the method is performed at a parser (e.g., the parser 254).The method includes: (i) obtaining video data comprising a plurality ofsyntax elements, the plurality of syntax elements including a firstsyntax element with a corresponding alphabet of M elements; (ii)obtaining respective probabilities of occurrence for the M elements ofthe first syntax element; (iii) entropy coding a first portion of thevideo data in accordance with the respective probabilities ofoccurrence; (iv) while entropy coding the first portion of the videodata, encountering the first syntax element; (v) updating probabilitiesof occurrence for the M elements in accordance with the first syntaxelement; (vi) in accordance with at least one of the updatedprobabilities for the M elements being less than a threshold probabilityvalue, entropy coding a second portion of the video data in accordancewith the respective probabilities of occurrence; and (vii) in accordancewith each of the updated probabilities for the M elements being at leastthe threshold probability value, entropy coding the second portion ofthe video data in accordance with the updated probabilities ofoccurrence.

In some embodiments, a minimum probability value P_(thr) is predefined,and when updating the probability during entropy coding, after encodingor decoding a syntax R, candidate probability updates are tested, and ifthe candidate probability updates yield probability values [ṕ₀, ṕ₁,...,ṕ_(k), .... ṕ_(M)] for a symbol in [s₀, s₁, ..., s_(k), ... s_(M)] whereat least one ṕ_(k) is lower than P_(thr,) the candidate probabilityupdate is not applied and [p₀, p₁, ..., p_(k), ... p_(M)] is not updatedafter encoding or decoding this syntax, otherwise, the probabilities areupdated to [ṕ₀, ṕ₁,..., ṕ_(k), .... ṕ_(M)] after encoding or decodingthis syntax.

(B2) In some embodiments of B1, a number of the M elements is in a rangeof 2 to 16. In some embodiments, the number of the M elements is greaterthan 16. In some embodiments, the range is predefined based on a codingprotocol, standard, and/or configuration.

(B3) In some embodiments of B1 or B2, the respective probabilities ofoccurrence for the M elements are represented by a cumulativedistribution function. For example, the CDFs described previously withrespect to FIGS. 5B and 6 .

(B4) In some embodiments of any of B1-B3, the threshold probabilityvalue is selected from a set of threshold probability values based onone or more properties of the first syntax element. For example, thethreshold probability value may be based on the number of the Melements.

(B5) In some embodiments of any of B1-B4, the second portion is entropycoded in accordance with the respective probabilities of occurrence inaccordance with a determination that M is less than a threshold number.For example, determining whether to use the updated probabilities isbased on whether the first syntax element has less than a presetthreshold number of elements (e.g., less than 12, 10, 8, 6, 4, or 2).

The methods described herein may be used separately or combined in anyorder. Each of the methods may be implemented by processing circuitry(e.g., one or more processors or one or more integrated circuits). Insome embodiments, the processing circuitry executes a program that isstored in a non-transitory computer-readable medium.

In some embodiments, the term “block” may be interpreted as a predictionblock, a coding block, or a coding unit (CU). In some embodiments, theterm “block” is used refer to a transform block. In some embodiments,the term “block size” refers to either the block width or height, amaximum value of width and height, minimum of width and height, an areasize (width * height), and/or an aspect ratio (width:height orheight:width) of the block. In some embodiments, a faster update raterefers to a bigger value of update rate, and/or a smaller probabilityupdate window size. In some embodiments, a slower update rate refers toa smaller value of update rate, and/or a larger probability updatewindow size.

In another aspect, some embodiments include a computing system (e.g.,the server system 112) including control circuitry (e.g., the controlcircuitry 302) and memory (e.g., the memory 314) coupled to the controlcircuitry, the memory storing one or more sets of instructionsconfigured to be executed by the control circuitry, the one or more setsof instructions including instructions for performing any of the methodsdescribed herein (e.g., A1-A21 and B1-B5 above).

In yet another aspect, some embodiments include a non-transitorycomputer-readable storage medium storing one or more sets ofinstructions for execution by control circuitry of a computing system,the one or more sets of instructions including instructions forperforming any of the methods described herein (e.g., A1-A21 and B1-B5above).

It will be understood that, although the terms “first,” “second,” etc.may be used herein to describe various elements, these elements shouldnot be limited by these terms. These terms are only used to distinguishone element from another.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the claims. Asused in the description of the embodiments and the appended claims, thesingular forms “a,” “an” and “the” are intended to include the pluralforms as well, unless the context clearly indicates otherwise. It willalso be understood that the term “and/or” as used herein refers to andencompasses any and all possible combinations of one or more of theassociated listed items. It will be further understood that the terms“comprises” and/or “comprising,” when used in this specification,specify the presence of stated features, integers, steps, operations,elements, and/or components, but do not preclude the presence oraddition of one or more other features, integers, steps, operations,elements, components, and/or groups thereof.

As used herein, the term “if” can be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting” that a stated condition precedent is true,depending on the context. Similarly, the phrase “if it is determined[that a stated condition precedent is true]” or “if [a stated conditionprecedent is true]” or “when [a stated condition precedent is true]” canbe construed to mean “upon determining” or “in response to determining”or “in accordance with a determination” or “upon detecting” or “inresponse to detecting” that the stated condition precedent is true,depending on the context.

The foregoing description, for purposes of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive orlimit the claims to the precise forms disclosed. Many modifications andvariations are possible in view of the above teachings. The embodimentswere chosen and described in order to best explain principles ofoperation and practical applications, to thereby enable others skilledin the art.

What is claimed is:
 1. A method of video coding performed at a computingsystem having memory and control circuitry, the method comprising:obtaining video data comprising a plurality of syntax elements, theplurality of syntax elements including a first syntax element with acorresponding alphabet of M elements; obtaining respective probabilitiesof occurrence for the M elements of the first syntax element; entropycoding a first portion of the video data in accordance with therespective probabilities of occurrence; while entropy coding the firstportion of the video data, encountering the first syntax element;updating probabilities of occurrence for the M elements in accordancewith the first syntax element; in accordance with at least one of theupdated probabilities for the M elements being less than a thresholdprobability value: determining regularized probabilities of occurrencefor the M elements by applying a probability regularization to theupdated probabilities of occurrence, wherein the probabilityregularization does not include a division operation; and entropy codinga second portion of the video data in accordance with the regularizedprobabilities of occurrence; and in accordance with each of the updatedprobabilities for the M elements being at least the thresholdprobability value, entropy coding the second portion of the video datain accordance with the updated probabilities of occurrence.
 2. Themethod of claim 1, wherein the threshold probability value is selectedfrom a set of threshold probability values based on one or moreproperties of the first syntax element.
 3. The method of claim 1,wherein determining the regularized probabilities of occurrence for theM elements includes determining an inverse probability update rate. 4.The method of claim 3, wherein: the inverse probability update rate isdetermined by multiplying a first predefined value by an output of afunction; the first predefined value is based on a number of symbolvalues for the first syntax element; and the function is based on thethreshold probability value and a value of an updated probability of theupdated probabilities for the M elements that is less than the thresholdprobability value.
 5. The method of claim 4, wherein the functioncomprises accessing a lookup table, wherein the threshold probabilityvalue and the value of the updated probability that is less than thethreshold probability value are used to index the lookup table.
 6. Themethod of claim 4, wherein multiplying the first predefined value by theoutput of the function comprises performing a right shift operation. 7.The method of claim 1, wherein determining the regularized probabilitiesof occurrence for the M elements includes determining a value for aregularized cumulative distribution function (CDF).
 8. The method ofclaim 7, wherein the value for the regularized CDF is determined bymultiplying the inverse probability update rate by the second predefinedvalue and by a CDF of the respective probabilities of occurrence for theM elements.
 9. The method of claim 1, wherein applying the probabilityregularization to the updated probabilities of occurrence includesscanning entries of a CDF of the respective probabilities of occurrencefor the M elements in a predefined order.
 10. The method of claim 9,wherein the predefined order is from a first entry of the CDF toward alast entry of the CDF, or from the last entry of the CDF toward thefirst entry of the CDF.
 11. The method of claim 9, wherein thepredefined order starts at an entry of the CDF having a probability ofoccurrence below the threshold probability value.
 12. The method ofclaim 1, wherein applying the probability regularization to the updatedprobabilities of occurrence includes applying an offset to a value of anupdated probability of the updated probabilities for the M elements thatis less than the threshold probability value.
 13. A computing system,comprising: control circuitry; memory; and one or more sets ofinstructions stored in the memory and configured for execution by thecontrol circuitry, the one or more sets of instructions comprisinginstructions for: obtaining video data comprising a plurality of syntaxelements, the plurality of syntax elements including a first syntaxelement with a corresponding alphabet of M elements; obtainingrespective probabilities of occurrence for the M elements of the firstsyntax element; entropy coding a first portion of the video data inaccordance with the respective probabilities of occurrence; whileentropy coding the first portion of the video data, encountering thefirst syntax element; updating probabilities of occurrence for the Melements in accordance with the first syntax element; in accordance withat least one of the updated probabilities for the M elements being lessthan a threshold probability value: determining regularizedprobabilities of occurrence for the M elements by applying a probabilityregularization to the updated probabilities of occurrence, wherein theprobability regularization does not include a division operation; andentropy coding a second portion of the video data in accordance with theregularized probabilities of occurrence; and in accordance with each ofthe updated probabilities for the M elements being at least thethreshold probability value, entropy coding the second portion of thevideo data in accordance with the updated probabilities of occurrence.14. The computing system of claim 13, wherein determining theregularized probabilities of occurrence for the M elements includesdetermining an inverse probability update rate.
 15. The computing systemof claim 14, wherein: the inverse probability update rate is determinedby multiplying a first predefined value by an output of a function; thefirst predefined value is based on a number of symbol values for thefirst syntax element; and the function is based on the thresholdprobability value and a value of an updated probability of the updatedprobabilities for the M elements that is less than the thresholdprobability value.
 16. The computing system of claim 13, whereindetermining the regularized probabilities of occurrence for the Melements includes determining a value for a regularized cumulativedistribution function (CDF).
 17. The computing system of claim 16,wherein the value for the regularized CDF is determined by multiplyingan inverse probability update rate by a second predefined value, whereinthe second predefined value is based on a number of symbol values forthe first syntax element.
 18. A non-transitory computer-readable storagemedium storing one or more sets of instructions configured for executionby a computing device having control circuitry and memory, the one ormore sets of instructions comprising instructions for: obtaining videodata comprising a plurality of syntax elements, the plurality of syntaxelements including a first syntax element with a corresponding alphabetof M elements; obtaining respective probabilities of occurrence for theM elements of the first syntax element; entropy coding a first portionof the video data in accordance with the respective probabilities ofoccurrence; while entropy coding the first portion of the video data,encountering the first syntax element; updating probabilities ofoccurrence for the M elements in accordance with the first syntaxelement; in accordance with at least one of the updated probabilitiesfor the M elements being less than a threshold probability value:determining regularized probabilities of occurrence for the M elementsby applying a probability regularization to the updated probabilities ofoccurrence, wherein the probability regularization does not include adivision operation; and entropy coding a second portion of the videodata in accordance with the regularized probabilities of occurrence; andin accordance with each of the updated probabilities for the M elementsbeing at least the threshold probability value, entropy coding thesecond portion of the video data in accordance with the updatedprobabilities of occurrence.
 19. The non-transitory computer-readablestorage medium of claim 18, wherein determining the regularizedprobabilities of occurrence for the M elements includes determining aninverse probability update rate.
 20. The non-transitorycomputer-readable storage medium of claim 18, wherein: the inverseprobability update rate is determined by multiplying a first predefinedvalue by an output of a function; the first predefined value is based ona number of symbol values for the first syntax element; and the functionis based on the threshold probability value and a value of an updatedprobability of the updated probabilities for the M elements that is lessthan the threshold probability value.